package beans;

import java.util.List;

import javax.naming.NamingException;
import org.richfaces.component.html.HtmlDataTable;

import co.edu.uniquindio.ondas.delegados.AdministradorDelegado;
import co.edu.uniquindio.ondas.dtos.ResumenInvestigacionDTO;
import co.edu.uniquindio.ondas.entidades.Bitacora1Maestro;
import co.edu.uniquindio.ondas.entidades.Bitacora2;
import co.edu.uniquindio.ondas.entidades.Bitacora2Maestro;
import co.edu.uniquindio.ondas.entidades.Bitacora3;
import co.edu.uniquindio.ondas.entidades.Bitacora3Maestro;
import co.edu.uniquindio.ondas.entidades.Evaluador;
/**
 * @author Javier
 *Bean para el Evaluador del Sistema
 */
public class AsignarEvaluadorBean {
	
	private AdministradorDelegado administradorDelegado;
	
	private HtmlDataTable tablaInvestigacion;
	
	private HtmlDataTable tablaEvaluador;
	
	private List<ResumenInvestigacionDTO> listaInvestigaciones;
	
	private List<Evaluador> listaEvaluadores;
	
	private Evaluador evaluadorSeleccionado=new Evaluador();
	
	private ResumenInvestigacionDTO investigacionSeleccionada=new ResumenInvestigacionDTO(0, 0, "", "", "","",0,null);
	
	private Bitacora2 bitacora2=new Bitacora2();
	
	private Bitacora3 bitacora3=new Bitacora3();
	
	private Bitacora2Maestro bitacora2Maestro=new Bitacora2Maestro();
	
	private Bitacora1Maestro bitacora1Maestro=new Bitacora1Maestro();
	
	private Bitacora3Maestro bitacora3Maestro=new Bitacora3Maestro();
	
	/**
	 *Metodo constructor
	 * @throws NamingException
	 */
	public AsignarEvaluadorBean() throws NamingException {
		administradorDelegado=new AdministradorDelegado();
	}
	
	
	/**
	 * Metodo que obtiene la Lista de investigaciones registradas en el sistema
	 * @return "asignarEvaluador"
	 */
	public String obtenerListaInvestigacion()
	{
		listaInvestigaciones= administradorDelegado.getlistaInvestigacionEvaluar();
		
		return "asignarEvaluador";
	}
	
	/**
	 * Metodo que permite obtener la investigacion seleccionada desde interfaz
	 * @return "resumenInvestigacion"
	 */
	public String obtenerSeleccion()
	{
		
		investigacionSeleccionada=(ResumenInvestigacionDTO) getTablaInvestigacion().getRowData();
		
		long idInvestigacion=investigacionSeleccionada.getIdInvestigacion();
		bitacora2=administradorDelegado.getBitacora2(idInvestigacion);
		bitacora3=administradorDelegado.getBitacora3(idInvestigacion);
		bitacora2Maestro=administradorDelegado.getBitacora2Maestro(idInvestigacion);
		bitacora1Maestro=administradorDelegado.getBitacora1Maestro(idInvestigacion);
		bitacora3Maestro=administradorDelegado.getBitacora3Maestro(idInvestigacion);
		
		
		
		return "resumenInvestigacion";
	}
	
	/**
	 * Metodo que permite obtener una Lista de Evaluadores registradas en el sistema
	 * @return
	 */
	public String obtenerlistaEvaluador()
	{
		//modificar pa que busque solo los evaluadores que tiene la misma lideatematica del grupo seleccionado
		listaEvaluadores=administradorDelegado.obtenerListaEvaluador(investigacionSeleccionada.getIdLinea());
		
		listaInvestigaciones= administradorDelegado.getlistaInvestigacionEvaluar();
		return "";
	}
	
	/**
	 * Metodo que permite Asignar un Evaluador a una Investigacion
	 * @return obtenerListaInvestigacion()
	 */
	@SuppressWarnings("unused")
	public String asignarEvaluador()
	{
		evaluadorSeleccionado=(Evaluador) getTablaEvaluador().getRowData();
		boolean asignado=administradorDelegado.asignarEvaluador(investigacionSeleccionada.getIdInvestigacion(), evaluadorSeleccionado.getIdentificacion());
		
		return obtenerListaInvestigacion();
	}


	/**
	 *Metodo accesor del atributo administradorDelegado
	 * @return the administradorDelegado
	 */
	public AdministradorDelegado getAdministradorDelegado() {
		return administradorDelegado;
	}


	/**
	 *Metodo Modificador del atributo administradorDelegado
	 * @param administradorDelegado the administradorDelegado to set
	 */
	public void setAdministradorDelegado(AdministradorDelegado administradorDelegado) {
		this.administradorDelegado = administradorDelegado;
	}


	/**
	 *Metodo accesor del atributo tablaInvestigacion
	 * @return the tablaInvestigacion
	 */
	public HtmlDataTable getTablaInvestigacion() {
		return tablaInvestigacion;
	}


	/**
	 *Metodo Modificador del atributo tablaInvestigacion
	 * @param tablaInvestigacion the tablaInvestigacion to set
	 */
	public void setTablaInvestigacion(HtmlDataTable tablaInvestigacion) {
		this.tablaInvestigacion = tablaInvestigacion;
	}


	/**
	 *Metodo accesor del atributo tablaEvaluador
	 * @return the tablaEvaluador
	 */
	public HtmlDataTable getTablaEvaluador() {
		return tablaEvaluador;
	}


	/**
	 *Metodo Modificador del atributo tablaEvaluador
	 * @param tablaEvaluador the tablaEvaluador to set
	 */
	public void setTablaEvaluador(HtmlDataTable tablaEvaluador) {
		this.tablaEvaluador = tablaEvaluador;
	}


	/**
	 *Metodo accesor del atributo listaInvestigaciones
	 * @return the listaInvestigaciones
	 */
	public List<ResumenInvestigacionDTO> getListaInvestigaciones() {
		return listaInvestigaciones;
	}


	/**
	 *Metodo Modificador del atributo listaInvestigaciones
	 * @param listaInvestigaciones the listaInvestigaciones to set
	 */
	public void setListaInvestigaciones(
			List<ResumenInvestigacionDTO> listaInvestigaciones) {
		this.listaInvestigaciones = listaInvestigaciones;
	}


	/**
	 *Metodo accesor del atributo listaEvaluadores
	 * @return the listaEvaluadores
	 */
	public List<Evaluador> getListaEvaluadores() {
		return listaEvaluadores;
	}


	/**
	 *Metodo Modificador del atributo listaEvaluadores
	 * @param listaEvaluadores the listaEvaluadores to set
	 */
	public void setListaEvaluadores(List<Evaluador> listaEvaluadores) {
		this.listaEvaluadores = listaEvaluadores;
	}


	/**
	 *Metodo accesor del atributo evaluadorSeleccionado
	 * @return the evaluadorSeleccionado
	 */
	public Evaluador getEvaluadorSeleccionado() {
		return evaluadorSeleccionado;
	}


	/**
	 *Metodo Modificador del atributo evaluadorSeleccionado
	 * @param evaluadorSeleccionado the evaluadorSeleccionado to set
	 */
	public void setEvaluadorSeleccionado(Evaluador evaluadorSeleccionado) {
		this.evaluadorSeleccionado = evaluadorSeleccionado;
	}


	/**
	 *Metodo accesor del atributo investigacionSeleccionada
	 * @return the investigacionSeleccionada
	 */
	public ResumenInvestigacionDTO getInvestigacionSeleccionada() {
		return investigacionSeleccionada;
	}


	/**
	 *Metodo Modificador del atributo investigacionSeleccionada
	 * @param investigacionSeleccionada the investigacionSeleccionada to set
	 */
	public void setInvestigacionSeleccionada(
			ResumenInvestigacionDTO investigacionSeleccionada) {
		this.investigacionSeleccionada = investigacionSeleccionada;
	}


	/**
	 *Metodo accesor del atributo bitacora2
	 * @return the bitacora2
	 */
	public Bitacora2 getBitacora2() {
		return bitacora2;
	}


	/**
	 *Metodo Modificador del atributo bitacora2
	 * @param bitacora2 the bitacora2 to set
	 */
	public void setBitacora2(Bitacora2 bitacora2) {
		this.bitacora2 = bitacora2;
	}


	/**
	 *Metodo accesor del atributo bitacora3
	 * @return the bitacora3
	 */
	public Bitacora3 getBitacora3() {
		return bitacora3;
	}


	/**
	 *Metodo Modificador del atributo bitacora3
	 * @param bitacora3 the bitacora3 to set
	 */
	public void setBitacora3(Bitacora3 bitacora3) {
		this.bitacora3 = bitacora3;
	}


	/**
	 *Metodo accesor del atributo bitacora2Maestro
	 * @return the bitacora2Maestro
	 */
	public Bitacora2Maestro getBitacora2Maestro() {
		return bitacora2Maestro;
	}


	/**
	 *Metodo Modificador del atributo bitacora2Maestro
	 * @param bitacora2Maestro the bitacora2Maestro to set
	 */
	public void setBitacora2Maestro(Bitacora2Maestro bitacora2Maestro) {
		this.bitacora2Maestro = bitacora2Maestro;
	}


	/**
	 *Metodo accesor del atributo bitacora1Maestro
	 * @return the bitacora1Maestro
	 */
	public Bitacora1Maestro getBitacora1Maestro() {
		return bitacora1Maestro;
	}


	/**
	 *Metodo Modificador del atributo bitacora1Maestro
	 * @param bitacora1Maestro the bitacora1Maestro to set
	 */
	public void setBitacora1Maestro(Bitacora1Maestro bitacora1Maestro) {
		this.bitacora1Maestro = bitacora1Maestro;
	}


	/**
	 *Metodo accesor del atributo bitacora3Maestro
	 * @return the bitacora3Maestro
	 */
	public Bitacora3Maestro getBitacora3Maestro() {
		return bitacora3Maestro;
	}


	/**
	 *Metodo Modificador del atributo bitacora3Maestro
	 * @param bitacora3Maestro the bitacora3Maestro to set
	 */
	public void setBitacora3Maestro(Bitacora3Maestro bitacora3Maestro) {
		this.bitacora3Maestro = bitacora3Maestro;
	}
	
	
	
	

//	public AdministradorDelegado getAdministradorDelegado() {
//		return administradorDelegado;
//	}
//
//	public void setAdministradorDelegado(AdministradorDelegado administradorDelegado) {
//		this.administradorDelegado = administradorDelegado;
//	}
//
//	public HtmlDataTable getTablaInvestigacion() {
//		return tablaInvestigacion;
//	}
//
//	public void setTablaInvestigacion(HtmlDataTable tablaInvestigacion) {
//		this.tablaInvestigacion = tablaInvestigacion;
//	}
//	
//	public HtmlDataTable getTablaEvaluador() {
//		return tablaEvaluador;
//	}
//
//
//	public void setTablaEvaluador(HtmlDataTable tablaEvaluador) {
//		this.tablaEvaluador = tablaEvaluador;
//	}
//
//
//	public List<ResumenInvestigacionDTO> getListaInvestigaciones() {
//		return listaInvestigaciones;
//	}
//
//	public void setListaInvestigaciones(
//			List<ResumenInvestigacionDTO> listaInvestigaciones) {
//		this.listaInvestigaciones = listaInvestigaciones;
//	}
//	
//
//	public List<Evaluador> getListaEvaluadores() {
//		return listaEvaluadores;
//	}
//
//
//	public void setListaEvaluadores(List<Evaluador> listaEvaluadores) {
//		this.listaEvaluadores = listaEvaluadores;
//	}
//
//
//	public ResumenInvestigacionDTO getInvestigacionSeleccionada() {
//		return investigacionSeleccionada;
//	}
//
//
//	public void setInvestigacionSeleccionada(
//			ResumenInvestigacionDTO investigacionSeleccionada) {
//		this.investigacionSeleccionada = investigacionSeleccionada;
//	}
//
//
//	public Bitacora2 getBitacora2() {
//		return bitacora2;
//	}
//
//
//	public Bitacora3 getBitacora3() {
//		return bitacora3;
//	}
//
//
//	public void setBitacora3(Bitacora3 bitacora3) {
//		this.bitacora3 = bitacora3;
//	}
//
//
//	public Bitacora2Maestro getBitacora2Maestro() {
//		return bitacora2Maestro;
//	}
//
//
//	public void setBitacora2Maestro(Bitacora2Maestro bitacora2Maestro) {
//		this.bitacora2Maestro = bitacora2Maestro;
//	}
//
//
//	public Bitacora1Maestro getBitacora1Maestro() {
//		return bitacora1Maestro;
//	}
//
//
//	public void setBitacora1Maestro(Bitacora1Maestro bitacora1Maestro) {
//		this.bitacora1Maestro = bitacora1Maestro;
//	}
//
//
//	public Bitacora3Maestro getBitacora3Maestro() {
//		return bitacora3Maestro;
//	}
//
//
//	public void setBitacora3Maestro(Bitacora3Maestro bitacora3Maestro) {
//		this.bitacora3Maestro = bitacora3Maestro;
//	}
//
//
//	public void setBitacora2(Bitacora2 bitacora2) {
//		this.bitacora2 = bitacora2;
//	}
//
//
//	public Evaluador getEvaluadorSeleccionado() {
//		return evaluadorSeleccionado;
//	}
//
//
//	public void setEvaluadorSeleccionado(Evaluador evaluadorSeleccionado) {
//		this.evaluadorSeleccionado = evaluadorSeleccionado;
//	}
//	
	
}
